Systems, methods and apparatus for creating, managing and presenting a social contacts list

ABSTRACT

First information identifying a person different from the user, and a request to generate a contact page associated with the person, are received from a user, by a first server operated by a first entity. Second information that enables access to a social networking website operated by a second entity different from the first entity is received from the user. A social networking web page maintained at the social networking website is accessed, based on the second information. Third information relating to the person is obtained from the social networking web page. The contact page is generated based on the third information.

This application claims priority from U.S. Provisional Application No.61/792,750, filed Mar. 15, 2013, which is hereby incorporated byreference herein in its entirety.

TECHNICAL FIELD

This specification relates generally to customer relationship managementsystems, and more particularly to systems and methods for creating,managing and presenting a social contacts list.

BACKGROUND

Customer relationship management (CRM) systems are widely used to helpbusinesses manage customer data and customer interaction, accessbusiness information, manage employee, vendor and partner relationships,etc. Accordingly, one common function of a CRM system is the managementof contacts lists. A contacts list system enables a user to compileinformation concerning various individuals of interest, includingbusiness contacts, friends, family members, etc. This function hasrecently begun to intersect with the functionalities of socialnetworking websites, which allow users to post and share personalinformation and view information posted by other users, compile lists offriends, etc. While the functionality of these two types of applicationsoverlap, existing systems fail to merge the functionality of a CRM-basedcontacts list and a social network.

SUMMARY

In accordance with an embodiment, a method of managing a contacts listfor a user is provided. First information identifying a person differentfrom the user, and a request to generate a contact page associated withthe person, are received from the user, by a first server operated by afirst entity. Second information that enables access to a socialnetworking website operated by a second entity different from the firstentity is received from the user. A social networking web pagemaintained at the social networking website is accessed, based on thesecond information. Third information relating to the person is obtainedfrom the social networking web page. The contact page is generated basedon the third information.

In one embodiment, the person is added to a contacts list of the user.

In another embodiment, the social networking web page is associated withthe person.

In another embodiment, the second information includes a username and apassword. The third information may comprise one of an address, an emailaddress, a telephone number, an image, a preference, and a name of anemployer.

In another embodiment, the contact page is provided to the user via awebsocket connection.

In accordance with another embodiment, a method of managing a contactslist is provided. A user device is caused to display a list of contactson a display. A selection of a contact from among the list of contactsis received from the user device, via a websocket connection.Information associated with the selected contact is provided to the userdevice, via the websocket connection. The user device is caused todisplay simultaneously the list of contacts, in a first region of thedisplay, and information associated with the selected contact, in asecond region of the display.

In another embodiment, a selection of a second contact from the list ofcontacts is received from the user device, via the websocket connection.Information associated with the second contact is provided to the userdevice, via the websocket connection. The user device is caused todisplay simultaneously the list of contacts, in the first region of thedisplay, and information associated with the second contact, in thesecond region of the display.

In one embodiment, the first region is located in a left side of thedisplay, and the second region is located in a central and right side ofthe display.

These and other advantages of the present disclosure will be apparent tothose of ordinary skill in the art by reference to the followingDetailed Description and the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a communication system in accordance with an embodiment;

FIG. 2 shows components of a network manager in accordance with anembodiment;

FIG. 3 shows components of a social contacts manager in accordance withan embodiment;

FIG. 4 shows a user login page in accordance with an embodiment;

FIG. 5 shows a network manager and a plurality of user devices connectedby respective websocket connections in accordance with an embodiment;

FIG. 6 shows a menu page in accordance with an embodiment;

FIG. 7 shows a create profile page in accordance with an embodiment;

FIG. 8 shows a profile page in accordance with an embodiment;

FIG. 9 is a flowchart of a method of generating a contact page inaccordance with an embodiment;

FIG. 10 shows a create new contact page in accordance with anembodiment;

FIGS. 11 and 12 show respective contact pages in accordance with anembodiment;

FIG. 13 shows a notes page in accordance with an embodiment;

FIG. 14 shows a contact page in accordance with an embodiment;

FIG. 15 is a flowchart of a method of providing a contacts list andinformation relating to a selected contact in accordance with anembodiment;

FIG. 16 shows a communication system in accordance with anotherembodiment;

FIG. 17A is a flowchart of method of generating a contact page inaccordance with an embodiment;

FIG. 17B is a flowchart of method of displaying a personalized socialnetworking page in accordance with an embodiment;

FIG. 17C shows a personalized social networking page in accordance withan embodiment; and

FIG. 18 is a high-level block diagram of an exemplary computer that maybe used to implement certain embodiments.

DETAILED DESCRIPTION

FIG. 1 shows a communication system in accordance with an embodiment.Communication system 100 comprises a network 105, a network manager 135,and a social contacts manager 150. Communication system 100 alsocomprises a plurality of user devices 160-A, 160-B, 160-C, etc.Communication system 100 also includes a third party social networkservice 173.

For convenience, the term “user device 160” is sometimes used herein torefer to any one of user devices 160-A, 160-B, 160-C, etc. Accordingly,any discussion herein referring to “user device 160” is equallyapplicable to each of user devices 160-A, 160-B, 160-C, etc.Communication system 100 may include more or fewer than three userdevices.

In the exemplary embodiment of FIG. 1, network 105 is the Internet. Inother embodiments, network 105 may comprise one or more of a number ofdifferent types of networks, such as, for example, an intranet, a localarea network (LAN), a wide area network (WAN), a wireless network, aFibre Channel-based storage area network (SAN), or Ethernet. Othernetworks may be used. Alternatively, network 105 may comprise acombination of different types of networks.

User device 160 may be any device that enables a user to communicate vianetwork 105. User device 160 may be connected to network 105 through adirect (wired) link, or wirelessly. In one embodiment, user device 160may include an Internet browser that enables a user to access contentvia the Internet. In one embodiment, user device 160 has a displayscreen for displaying information. For example, user device 160 may be apersonal computer, a laptop computer, a workstation, a mainframecomputer, etc. Alternatively, user device 160 may be a mobilecommunication device such as a wireless phone, a personal digitalassistant, etc. Other devices may be used.

Network manager 135 controls access to content and services. FIG. 2shows components of network manager 135 in accordance with anembodiment. Network manager 135 includes a controller 210, a userregistration & login module 220, a websocket module 225, and a storage230. Controller 210 orchestrates the operation of other components ofnetwork manager 135. User registration & login module 220 manages theregistration and login of a user prior to the user being permitted toaccess content and services. Storage 230 is used from time to time byother components of network manager 135 to store various types of data.For example, in the illustrative embodiment of FIG. 2, a userregistration database 265 containing usernames, passwords, and otherinformation relating to various users is stored in storage 230. Networkmanager 135 may include other components not shown in FIG. 2.

Websocket module 225 from time to time establishes a websocketconnection between network manager 135 and another device incommunication system 100. As used herein, the term “websocketconnection” refers to a connection established in accordance with theWebSocket protocol, which provides full-duplex communication channelsover a single TCP connection. The WebSocket protocol was standardized bythe IETF as RFC 6455 in 2011.

In another embodiment, a WebSocket API in Web IDL is used.

Communications conducted via a websocket connection are different fromHTTP communications, because unlike HTTP, WebSocket provides forfull-duplex communication. HTTP uses a request-response structure inwhich a client transmits a request to a server, and the server transmitsa response after the complete request has been transmitted. In contrast,after an initial handshake, WebSocket does not require repeated requestsand responses for each communication. Additionally, WebSocket enablesstreams of messages on top of TCP. Secure versions of the WebSocketprotocol have been implemented for a variety of different browsers.

To establish a websocket connection, a client sends a WebSockethandshake request, in a well-known format, and the server sends aWebSocket handshake response, in a well-known format. The handshakeresembles HTTP so that servers can handle HTTP connections as well aswebsocket connections on the same port. However, the specific fieldsinvolved, and activity after the handshake, do not conform to the HTTPprotocol.

In one embodiment, websocket communications are conducted usingTransmission Control Protocol (TCP) port 80.

Once a websocket connection is established, the client and server cansend WebSocket data or text frames back and forth in full-duplex mode.The data is minimally framed, with a small header followed by payload.WebSocket transmissions are described as “messages,” where a singlemessage can optionally be split across several data frames. This allowsfor sending of messages where initial data is available but the completelength of the message is unknown.

FIG. 3 shows components of social contacts manager 150 in accordancewith an embodiment. Social contacts manager 150 comprises a usercontacts module 320, a social network module 330, a notes module 340,and a storage 360. User contacts module 320 provides one or morecustomer relationship management functions, including, for example,functionality that enables a user to create and maintain a profile andone or more contacts lists. Use contacts module 320 stores profiles in auser profile database 372 within storage 360, shown in FIG. 3. Usercontacts module 320 stores contacts list information in a contacts listdatabase 375 within storage 360, shown in FIG. 3. Notes module 340allows one or more users to generate and store notes relating to aselected topic. Notes module 340 stores notes information in a notesdatabase 378 within storage 360, shown in FIG. 3. Social network module330 from dine to time accesses website maintained by a third partysocial network service and obtains information associated with aspecified person.

In one embodiment, data is stored in one or more document-orienteddatabases. Thus, for example, use profile database 372, contacts listdatabase 375, and/or notes database 378 may comprise a document-orienteddatabase. Document-oriented databases may use any suitable encoding suchas XML, YAML, JSON, BSON, etc.

Third party social network service 173 maintains a social networkingwebsite accessible via network 105. In a well-known manner, the websiteallows an individual to create and maintain a personalized web pagecontaining information about himself or herself. For example, anindividual's personalized web page may contain the individual's name,address, telephone number(s), email address, image, as well asinformation specifying the individual's hobbies, interests, preferences.A personalized web page may also include other features such as apersonalized blog with posts created by the individual, lists of theindividual's friends, etc. Third party social network service 173enables the creator of a personalized web page to grant varying levelsof access to selected people. Thus, for example, the creator may (1)grant to his wife access to all information on the web page; (2) grantto a friend access to all information on the web page except certainfamily pictures; and (3) grant to a colleague from work access only tothe creator's name, telephone number and email address.

In an illustrative embodiment, a user employing user device 160-Aaccesses a website maintained by network manager 135. For example, theuser may utilize a browser application (not shown) residing andoperating on user device 160-A to access the website. Upon accessing thewebsite, user registration & login module 220 (of network manager 135)may provide a user login page such as that shown in FIG. 4. User loginpage 400 includes a username field 410 and a password field 420. Afterthe user enters a valid username and password, and is authenticated,controller 210 (of network manager 135) instructs websocket module 225to establish a websocket connection between network manager 135 and userdevice 160-A. In response, websocket module 225 establishes a websocketconnection between network manager 135 and user device 160-A. Referringto FIG. 5, a websocket connection 510 is established between networkmanager 135 and user device 160-A.

In one embodiment, network manager 135 is capable of establishing andmaintaining a plurality of separate websocket connections simultaneouslybetween network manager 135 and a plurality of user devices. FIG. 5shows network manager 135 and a plurality of user devices 160-A, 160-B,and 160-C. While websocket connection 510 is maintained between networkmanager 135 and user device 160-A, a second websocket connection 520 isestablished between network manager 135 and user device 160-B, and athird websocket connection 530 is established between network manager135 and user device 160-C.

In one embodiment, network manager 135 manages communications between auser device 160 and another component of communication system 100. Forexample, a request for data sent by user device 160-A to social contactsmanager 150 is transmitted via websocket connection 510 to networkmanager 135, which forwards the request to social contacts manager 150.Data transmitted by social contacts manager 150 to user device 160-A inresponse to the request is transmitted to network manager 135 and thento user device 160-A via websocket connection 510.

After websocket connection 510 is established between network manager135 and user device 160-A, controller 210 (of network manager 135)causes the browser on user device 160-A to display a menu page such asthat shown in FIG. 6 that indicates one or more products and/or servicesavailable via the website. Menu page 600 presents a plurality ofselections including a search button 610, a games button 620, a chatbutton 630, a store button 640, a contacts button 650, and an emailbutton 660. Other selections may be included.

In the illustrative embodiment, the user of user device 160-A, wishingto create a contacts list, selects contacts button 650. Network manager135 transmits the user's selection to social contacts manager 150.Social contacts manager 150, in response, detects that the user is a newuser and accordingly provides a “Create Profile Page” page such as thatshown in FIG. 7. Create profile page 700 comprises a plurality of fieldsin which the user may enter personal information, including a name field722, an address field 724, an email field 726, a telephone number field728, an Add image field 730, and a company field 730. The fields shownin FIG. 7 are illustrative only; in other embodiments, other fields maybe included relating to other types of personal information. Createprofile page 700 also comprises a social networking box 750 in which theuser may specify a social networking website on which the user maintainsa personalized social networking page. Social networking box 750 thusincludes a social network field 752 in which a social networking websitemay be identified, a username field 754 and a password field 756 inwhich the user may specify the username and password that he or she usesto access his or her personalized page on the specified socialnetworking website. In the illustrative embodiment, network manager 135provides Create profile page 700 via websocket connection 510.

While in the illustrative embodiment, components of communication system100 provide web pages which a user may view and employ to enterinformation, in other embodiments, other interfaces may be used tocommunicate with a user. For example, in another embodiment, one or morepages associated with a mobile App may be used.

In the illustrative embodiment of FIG. 7, the user enters nameinformation (“John Doe”) into name field 722 and email information(johndoe@email) into email field 726, but leaves other fields empty. Theuser also specifies a social networking website (“MySocialNetwork”) infield 752, and a username and password that may be used to access apersonalized page at in the associated social network. When the userwishes to proceed, the user selects a “DONE” button 785.

User contacts module 320 utilizes the information provided by the userto create a new user profile. The user profile is stored in user profiledatabase 372 in storage 360 (shown in FIG. 3). User contacts module 320now activates social network module 330 to access the social networkingwebsite specified by the user and obtain additional information. Socialnetworking module 330 employs the information provided by the user infields 752, 754, and 756 of Create profile page 700 and accesses thesocial network identified as “MySocialNetwork.” In the illustrativeembodiment, “MySocialNetwork” is a third party social networking websitemaintained by third party social network service 173.

Social networking module 330 accesses the “MySocialNetwork” socialnetworking website and uses the username and password provided by theuser to access the user's personalized social networking page. Socialnetworking module 330 examines the user's personalized page, and anyother information sources accessible to the user on the“MySocialNetwork” site, in order to retrieve additional informationabout the user. In the illustrative embodiment, social networking module330 obtains the user's address and telephone number, an image of theuser, and the name of the user's current employer.

Social network module 330 also obtains from the user's personalizedsocial networking page at the third party social networking websiteinformation indicating the user's hobbies, and information indicatingthe user's favorite song.

Social network module 330 provides the various items of informationretrieved from the user's personalized page at “MySocialNetwork” to usercontacts module 320. User contacts module 320 now combines theinformation provided by the user, and the information obtained from theuser's personalized page at the third party social networking website“MySocialNetwork,” and creates a profile page for the user. FIG. 8 showsa profile page 800 for the user. Profile page 800 includes a name field811 specifying the user's name (“John Doe”), a company field 813specifying the user's current employer, an image 815 of the user, anemail field 817 showing the user's email address, a telephone numberfield 819 showing the user's telephone number, and an address field 821showing the user's address.

Profile page 800 also includes a hobbies box 832 listing the user'shobbies (hiking, music, videogames) and a favorite music field 834indicating the user's favorite song (“Happy Song”).

Profile page 800 also includes a “Profile” button 802 and a “NewContact” button 804 along the top of the display. Profile page 800 alsoincludes a contacts list 860 on the left-hand side of the display.Because the user has not yet created any contacts, the profile pageindicates “No Contacts” in box 861.

In the illustrative embodiment, network manager 135 provides profilepage 800 to user device 160-A via websocket connection 510.

In a similar manner, a contact page may be generated based oninformation retrieved from a social networking page maintained at athird party social networking website. FIG. 9 is a flowchart of a methodof generating a contact page in accordance with an embodiment. At step910, first information is received from a user, by a first serveroperated by a first entity, the first information identifying a persondifferent from the user. A request to generate a contact page associatedwith the person is also received by the first server.

In the illustrative embodiment, the user now wishes to create a newcontact, and selects New Contact button 804 (shown in FIG. 8). Inresponse, user contacts module 320 provides a “Create New Contact” pagesuch as that shown in FIG. 10. Create New Contact page 1000 includes aname field 1001, an address field 1003, an email field 1005, a telephonenumber field 1007, and a company field 1009. The user enters a name “TimBrown” in name field 1001, an email address “timb@email” in email field1005, and a telephone number (“123-555-5555”) in telephone number field1007. The user then selects “CREATE CONTACT” button 1015.

User contacts module 320 receives the information provided by the userand creates a new contact. The new contact information is stored incontacts list database 375 within storage 360 (shown in FIG. 3).

At step 920, second information that enables access to a socialnetworking website operated by a second entity different from the firstentity is received from the user. As described above, social networkmodule 330 receives the information provided by the user identifying thesocial networking website “MySocialNetwork” and the user's username andpassword.

At step 930, a social networking web page maintained at the socialnetworking website is accessed, based on the second information. Socialnetwork module 330 utilizes the user's username and password to accessthe social networking website “MySocialNetwork” previously specified bythe user to determine whether Tim Brown (the individual specified by theuser in the contact information) maintains a personalized page on thesocial networking site. In the illustrative embodiment, social networkmodule 330 determines that Tim Brown (the specified individual) doesmaintain a personalized page on “MySocialNetwork.” Social network module330 accordingly utilizes the user's username and password associatedwith the social networking website to access Tim Brown's personalizedsocial network page and obtain additional information.

At step 940, third information relating to the person is obtained fromthe social networking web page. Social network module 330 examines TimBrown's personalized social network page and obtains information that isaccessible based on the user's access level. In the illustrativeembodiment, social network module 330 retrieves Tim Brown's address, animage of Tim Brown, the name of Tim Brown's current employer, a list ofTim Brown's hobbies, and information indicating Tim Brown's favoritesports team. Social network module 330 provides these items ofinformation to user contacts module 320.

At step 950, the contact page is generated based on the thirdinformation. User contacts module 320 now creates a contact page for TimBrown based on the information provided by the user and the informationobtained from Tim Brown's personalized social network page. FIG. 11shows a contact page in accordance with an embodiment. Contact page 1100comprises includes a name field 1011 specifying the contact person'sname (“Tim Brown”), a company field 1113 specifying the contact person'scurrent employer (“ACME Corp.”), an image 1115 of the person, an emailfield 1117 showing the person's email address, a telephone number field1119 showing the person's telephone number, and an address field 1121showing the person's address.

Contact pane 1100 also includes a hobbies box 1132 listing the contactperson's hobbies (cars, football) and a favorite team field 1136indicating the user's favorite team (“San Diego Chargers”).

Contact page 1100 also includes “Profile” button 802 and “New Contact”button 804 along the top of the display. Contact page 1100 also includescontacts list 860 on the left-hand side of the display. Contacts list860 comprises a contact tab 1162 associated with Tim Brown. Because thecontact page for Tim Brown is currently being displayed, tab 1162 isshaded, as shown in FIG. 11.

In the illustrative embodiment, network manager 135 provides contactpage 1100 to user device 160-A via websocket connection 510.

Suppose now that the user employs similar systems and methods to createa contact page for another person whose name is “Steve White.” The userprovides one or more items of information identifying Steve White, in amanner similar to that described above. User contacts module 320receives the information from the user, and then activates socialnetwork module 330. Social network module 330 accesses one or more pagesmaintained at the social networking website, based on the user'susername and password (previously received from the user), and obtainsadditional information concerning Steve White. User contacts module 320then creates a contact page for Steve White based on the informationprovided by the user and the information obtained from the socialnetworking website.

FIG. 12 shows a contact page for Steve White in accordance with anembodiment. Contact page 1200 comprises includes a name field 1211specifying the contact person's name (“Steve White”), a company field1213 specifying the contact person's current employer (“Design Corp.”),an image 1215 of the person, an email field 1217 showing the person'semail address, and it telephone number field 1219 showing the person'stelephone number. Contact pane 1200 also comprises a first region 1253entitled “Steve's Wall of Art” which contains several designs, and asecond region 1283 entitled “Steve's Blog.”

Contact page 1200 also includes “Profile” button 802 and “New Contact”button 804 along the top of the display. Contact page 1200 also includescontacts list 860 on the left-hand side of the display. Contacts list860 comprises contact tab 1062 associated with Tim Brown and a contacttab 1254 associated with Steve White. Because the Steve White contactpage is currently being displayed, tab 1264 is shaded, as shown in FIG.12.

In the illustrative embodiment, network manager 135 provides contactpage 1200 to user device 160-A via websocket connection 510.

In accordance with another embodiment, two or more users may utilize anotes function to write notes relating to a selected topic in acollaborative manner. If notes relating to a particular individual aregenerated, the notes may be displayed with, or above, a contact pageassociated with the particular individual. Referring again to FIGS. 8and 11, John Doe and Tim Brown are both employees of ACME Corp., asindicated by company fields 813 and 1113. In addition, both John Doe andTim Brown are members of a team created for a particular project; theteam is referred to as “Team A.” Referring again to FIGS. 8 and 11, ateam symbol 844 is displayed on page 800 and on page 1100 next to eachrespective person's name to indicate membership in the team. SteveWhite, however, is not a member of Team A and therefore the contact page1200 (shown in FIG. 12) for Steve White does not display team symbol844.

Suppose now that Team A maintains a web page to enable team members togenerate notes relating to various topics. Suppose further that John Doeand Tim Brown, in the course of their work for Team A, generate one ormore notes relating to Steve White. FIG. 13 shows a notes page 1300showing notes 1303, 1305, 1307 containing various notes written by JohnDoe and Tim Brown and relating to work done by Steve White. Referring toFIG. 3, notes 1303, 1305, 1307 are stored in notes database 378 withinstorage 360 (of social contacts manager 150).

In accordance with an embodiment, if a team member accesses a contactpage associated with a selected person, any stored notes relating to theselected person are displayed simultaneously with, or above, the contactpage on a display. For example, if John Doe subsequently access contactpage 1200 (of Steve White), notes relating to Steve White are retrievedfrom notes database 378 and displayed above contact page 1200. In anillustrative embodiment shown in FIG. 14, notes relating to Steve Whiteare shown in a region 1405 located at the bottom of the display. Note1303 is currently visible; a scroll bar 1470 is provided to allow theuser to scroll down and view additional notes.

In accordance with another embodiment, a user may view a contacts listcomprising a plurality of contacts, and rapidly view informationrelating to each contact on the list. Referring to FIGS. 11, 12, and 14,contacts list 850 is displayed in a first region on the left side of adisplay, and the information relating to a selected contact is displayedsimultaneously in a region located in the center and right side of thedisplay.

Advantageously, a user may quickly obtain and view stored informationrelating to any selected contact in a contacts list, by selecting thedesired contact from among the list displayed in the first region.Because network manager 135 maintains a websocket connection with userdevice 160-A, stored information relating to a selected contact istransmitted to user device 160-A without the need, for example, tocomplete a request-response procedure as required by the HTTP protocoleach time a different contact is selected. As a result, the user'sviewing experience is more rapid and is enhanced.

In accordance with another embodiment, information relating to aselected contact is streamed to user device 160 via websocket connection510.

FIG. 15 is a flowchart of a method of providing a contacts list andinformation related to one or more contacts, in accordance with anembodiment. At step 1510, a user device is caused to display a list ofcontacts on a display. At step 1520, a selection of a contact from amongthe list of contacts is received from the user device, via a websocketconnection. At step 1530, information associated with the selectedcontact is provided to the user device, via the websocket connection. Atstep 1540, the user device is caused to display simultaneously the listof contacts, in a first region of the display, and informationassociated with the selected contact, in a second region of the display.

While in the illustrative embodiments, social network module 330accesses a social network maintained by third party social networkservice 173, winch is independent of network manager 135, in anotherembodiment, network manager 135 (or an affiliated entity) maintains asocial network which users may employ to create personal profiles, etc.Social network module 330 may access such a social network and, in amanner similar to that described above, obtain information relating toone or more users of such social network in order to create a contactpage.

In accordance with another embodiment, the functionality of socialcontact manager 150 may reside in a user device 160. FIG. 16 illustratesa communication system in accordance with an embodiment. Communicationsystem 1600 includes network 105, network manager 135, a social networkservice 1673, and a plurality of user devices including user devices160-D, 160-E, and 160-F. User device 160-D comprises a social contactsmanager 1680 which has functionalities analogous to some or all of thefunctionalities of social contacts manager 150, as described above.

Social network service 1673 maintains an online social network in whichusers may create personalized social networking pages, and interact in avariety of ways. In the illustrative embodiment, social network service1673 and network manager 135 are both controlled by the same entity, andnetwork manager 135 controls access to the social network.

In accordance with an embodiment, a user employing user device 160-Dcreates a social contact page associated with another person. In anillustrative embodiment, the user of user device 160-D is a registereduser of the website maintained by network manager 135 and/or aregistered user of the social network maintained by social networkservice 1673.

FIG. 17A is a flowchart of a method of generating a contact page inaccordance with an embodiment. At step 1710, first informationidentifying a person different from the user, and a request to generatea contact page associated with the person, are received. In a mannersimilar to that described above, the user of user device 160-D mayselect an option to create a contact page for a specified person. Theuser enters one or more items of information related to the person, suchas the person's name and address.

At step 1720, a personalized social networking page associated with theperson and maintained within an online social network is accessed.Social contacts manager 1680 accesses a personalized social networkingpage associated with the specified person, within the social networkmaintained by social network service 1673, based on the firstinformation. For example, social network service 1673 may utilize theperson's name and address to identify the person's personalized socialnetworking page. In the illustrative embodiment of FIG. 16, because theuser is a registered use of the website maintained by network manager135 and/or a registered user of the social network maintained by socialnetwork service 1673, social contacts manager 1680 (of user device160-D) is permitted to access various personalized social networkingpages within the social network.

At step 1730, second information relating to the person is obtained fromthe personalized social networking page. Thus, social network service1673 obtains additional information from the personalized socialnetworking page, such as the person's telephone number, the person'semployer, the person's email address, etc.

At step 1740, a contact page is generated based on the secondinformation. Social network service 1673 now generates a contact pagecontaining the first information (provided by the user) and the secondinformation (obtained from the personalized social networking page). Thecontact page may be stored in a storage within user device 160-D.

In accordance with another embodiment, information is retrieved from auser's contacts list and used to enhance a display of as socialnetworking page associated with another person.

FIG. 17B is a flowchart of a method of displaying a social networkingpage in accordance with an embodiment. Suppose that the user (John Doe)now wishes to view Tim Brown's social networking page on the socialnetwork “MySocialNetwork.” John Doe accordingly uses a browserapplication on user device 160-A and navigates to Tim Brown'spersonalized social networking page on the social network.

In one embodiment, the method described in FIG. 17B may be used toobtain information from a page maintained on social network controlledby or affiliated with an entity that control network manager 135. Inanother embodiment, the method described in FIG. 17B may be used toobtain information from a page maintained on social network that isindependent of the entity that control network manager 135.

At step 1760, a request to access a social networking page that ismaintained in an online social network and associated with a specifiedperson different from the user is received from a user. Network manager135 receives the user's request to access Tim Browns personalizednetworking page and forwards the request to social network manager 150.

At step 1770, first information representing the social networking pageassociated with the specified person is obtained via a network. Socialnetwork module 330 accesses Tim Brown's personalized page on“MySocialNetwork” and retrieves data associated with the socialnetworking page. In the illustrative embodiment, Tim Brown's socialnetworking page comprises an image of Tim Brown, Tim Brown's address,information concerning Tim Brown's hobbies, etc.

At step 1780, second information relating to the specified person isobtained from a contacts list associated with the user. Social networkmodule 330 determines that Tint Brown's social networking page does notinclude Tim Brown's email or his telephone number. Therefore, socialnetwork module 330 access John Doe's contact list. In particular, socialnetwork module 330 accesses contact page 1100 associated with Tim Brown(shown in FIG. 11), and retrieve Tim Brown's email address (item 1117 inFIG. 11) and Tim Brown's telephone number (item 1119).

At step 1790, a combined social networking page comprising the firstinformation and the second information is displayed, in response to therequest. Social network module 330 now combines the informationretrieved from John Doe's contact list and the data representing TimBrown's personalized social networking page to generate a combinedsocial networking page, as shown in FIG. 17C.

FIG. 17C shows a combined social networking page associated with TimBrown in accordance with an embodiment. Social networking page 1795comprises a name field 1791, an address field 1792, and a hobbies regionshowing, respectively, Tim Brown's name, address, and hobbies. Page 1795also includes a friends region showing Tim Brown's friends, and apersonal blog 1796. Page 1795 also includes an image 1797 of Tim Brown.Social networking page 1795 also comprises an email field 1787 and atelephone number field showing, respectively, Time Brown's email addressand telephone number. Email field 1787 and telephone number field 1788are shaded, indicating that the information in these fields was obtainedby the viewer's contacts list.

In various embodiments, the method steps described herein, including themethod steps described in FIGS. 9, 15, and/or 17, may be performed in anorder different from the particular order described or shown. In otherembodiments, other steps may be provided, or steps may be eliminated,from the described methods.

Systems, apparatus, and methods described herein may be implementedusing digital circuitry, or using one or more computers using well-knowncomputer processors, memory units, storage devices, computer software,and other components. Typically, a computer includes a processor forexecuting instructions and one or mere memories for storing instructionsand data. A computer may also include, or be coupled to, one or moremass storage devices, such as one or more magnetic disks, internal harddisks and removable disks, magneto-optical disks, optical disks, etc.

Systems, apparatus, and methods described herein may be implementedusing computers operating in a client-server relationship. Typically, insuch a system, the client computers are located remotely from the servercomputer and interact via a network. The client-server relationship maybe defined and controlled by computer programs running on the respectiveclient and server computers.

Systems, apparatus, and methods described herein may be used within anetwork-based cloud computing system. In such a network-based cloudcomputing system, a server or another processor that is connected to anetwork communicates with one or more client computers via a network. Aclient computer may communicate with the server via a network browserapplication residing and operating on the client computer, for example.A client computer may gore data on the server and access the data viathe network. A client computer may transmit requests for data, orrequests for online services, to the server via the network. The servermay perform requested services and provide data to the clientcomputer(s). The server may also transmit data adapted to cause a clientcomputer to perform a specified function, e.g., to perform acalculation, to display specified data on a screen, etc.

Systems, apparatus, and methods described herein may be implementedusing a computer program product tangibly embodied in an informationcarrier, e.g., in a non-transitory machine-readable storage device, forexecution by a programmable processor; and the method steps describedherein, including one or more of the steps of FIGS. 9, 15, and/or 17,may be implemented using one or more computer programs that areexecutable by such a processor. A computer program is a set of computerprogram instructions that can be used, directly or indirectly, in acomputer to perform as certain activity or bring about a certain result.A computer program can be written in any form of programming language,including compiled or interpreted languages, and it can be deployed inany form, including as a stand-alone program or as a module, component,subroutine, or other unit suitable for use in a computing environment.

A high-level block diagram of an exemplary computer that may be used toimplement systems, apparatus and methods described herein is illustratedin FIG. 18. Computer 1800 includes a processor 1801 operatively coupledto a data storage device 1802 and a memory 1803. Processor 1801 controlsthe overall operation of computer 1800 by executing computer programinstructions that define such operations. The computer programinstructions may be stored in data storage device 1802, or othercomputer readable medium, and loaded into memory 1803 when execution ofthe computer program instructions is desired. Thus, the method steps ofFIGS. 9, 15, and/or 17 can be defined by the computer programinstructions stored in memory 1803 and/or data storage device 1802 andcontrolled by the processor 1801 executing the computer programinstructions. For example, the computer program instructions can beimplemented as computer executable code programmed by one skilled in theart to perform an algorithm defined by the method steps of FIGS. 9, 15and/or 17. Accordingly, by executing the computer program instructions,the processor 1801 executes an algorithm defined by the method steps ofFIGS. 9, 15, and/or 17. Computer 1800 also includes one or more networkinterfaces 1804 for communicating with other devices via a network.Computer 1800 also includes one or more input/output devices 1805 thatenable user interaction with computer 1800 (e.g., display, keyboard,mouse, speakers, buttons, etc.).

Processor 1801 may include both general and special purposemicroprocessors, and may be the sole processor or one of multipleprocessors of computer 1800. Processor 1801 may include one or morecentral processing units (CPUs), for example. Processor 1801, datastorage device 1802, and/or memory 1803 may include, be supplemented by,or incorporated in, one or more application-specific integrated circuits(ASICs) and/or one or more field programmable gate arrays (FPGAs).

Data storage device 1802 and memory 1803 each include a tangiblenon-transitory computer readable storage medium. Data storage device1802 and memory 1803, may each include high-speed random access memory,such as dynamic random access memory (DRAM), static random access memory(SRAM), double data rate synchronous dynamic random access memory (DDRRAM), or other random access solid state memory devices, and may includenon-volatile memory, such as one or more magnetic disk storage devicessuch as internal hard disks and removable disks, magneto-optical diskstorage devices, optical disk storage devices, flash memory devices,semiconductor memory devices, such as erasable programmable read-onlymemory (EPROM), electrically erasable programmable read-only memory(EEPROM), compact disc read-only memory (CD-ROM), digital versatile discread-only memory (DVD-ROM) disks, or other non-volatile solid statestorage devices.

Input/output devices 1805 may include peripherals, such as a printer,scanner, display screen, etc. For example, input/output devices 1805 mayinclude a display device such as a cathode ray tube (CRT) or liquidcrystal display (LCD) monitor for displaying information to the user, akeyboard, and a pointing device such as a mouse or a trackball by whichthe user can provide input to computer 1800.

Any or all of the systems and apparatus discussed herein, includingnetwork manager 135, social contacts manager 150, third party socialnetwork service 173, and user device 160, and components thereof,including controller 210, user registration & login module 220,websocket module 225, storage 230, user contacts module 320, socialnetwork module 330, notes module 340, and storage 360, may beimplemented using a computer such as computer 1800.

One skilled in the art will recognize that an implementation of anactual computer or computer system may have other structures and maycontain other components as well, and that FIG. 18 is a high levelrepresentation of some of the components of such a computer forillustrative purposes.

The foregoing Detailed Description is to be understood as being in everyrespect illustrative and exemplary, but not restrictive, and the scopeof the invention disclosed herein is not to be determined from theDetailed Description, but rather from the claims as interpretedaccording to the full breadth permitted by the patent laws. It is to beunderstood that the embodiments shown and described herein are onlyillustrative of the principles of the present invention and that variousmodifications may be implemented by those skilled in the in withoutdeparting from the scope and spirit of the invention. Those skilled inthe in could implement various other feature combinations withoutdeparting from the scope and spirit of the invention.

1. A method of managing a contacts list, the method comprising:receiving, by a first server operated by a first entity, from a user,first information identifying a person different from the user and arequest to generate a contact page associated with the person; receivingfrom the user second information that enables access to a socialnetworking website operated by a second entity different from the firstentity; accessing a social networking web page maintained at the socialnetworking website, based on the second information; obtaining from thesocial networking web page third information relating to the person; andgenerating the contact page based on the third information.
 2. Themethod of claim 1, further comprising: adding the person to a contactslist of the user.
 3. The method of claim 1, wherein the socialnetworking web page is associated with the person.
 4. The method ofclaim 1, wherein the second information includes a username and apassword.
 5. The method of claim 1, wherein the third informationcomprises one of an address, an email address, a telephone number, animage, a preference, and a name of an employer.
 6. The method of claim1, further comprising: providing the contact page to a use device via awebsocket connection.
 7. The method of claim 6, further comprising:identifying one or more notes associated with the person, the notesbeing stored by a second server operated by the first entity; andcausing the user device to display the contact page and the one or morenotes simultaneously.
 8. A system comprising: a storage adapted to storeinformation relating to one or more persons; a processor adapted to:receive, from a user, first information identifying a person differentfrom the user and a request to generate a contact page associated withthe person; receive from the user second information that enables accessto a social networking website operated by a second entity differentfrom the first entity; access a social networking web page maintained atthe social networking website, based on the second information; obtainfrom the social networking web page third information relating to theperson; and generate the contact page based on the third information. 9.The system of claim 8, wherein the processor is further adapted to: addthe person to a contacts list of the user.
 10. The system of claim 8,wherein the social networking web page is associated with the person.11. The system of claim 8, wherein the second information includes ausername and a password.
 12. The system of claim 8, wherein the thirdinformation comprises one of an address, an entail address, a telephonenumber, an image, a preference, and a name of an employer.
 13. Thesystem of claim 8, wherein the processor is further adapted to: providethe contact page to the user via a websocket connection.
 14. A method ofmanaging a contacts list, the method comprising: causing a user deviceto display a list of contacts on a display; receiving from the userdevice, via a websocket connection, a selection of a contact from amongthe list of contacts; providing to the user device, via the websocketconnection, information associated with the selected contact; causingthe user device to display simultaneously the list of contacts, in afirst region of the display, and information associated with theselected contact, in a second region of the display.
 15. The method ofclaim 14, further comprising: receiving from the user device, via thewebsocket connection, a selection of a second contact from the list ofcontacts; providing to the user device, via the websocket connection,information associated with the second contact; causing the user deviceto display simultaneously the list of contacts, in the first region ofthe display, and information associated with the second contact, in thesecond region of the display.
 16. The method of claim 14, wherein: thefirst region is located in a left side of the display; and the secondregion is located in a central and right side of the display.
 17. Amethod comprising: receiving, by a user device, from a user, a requestto access a social networking page that is maintained in an onlinesocial network and associated with a specified person different from theuser; obtaining, by the user device, via a network, first informationrepresenting the social networking page associated with the specifiedperson; obtaining, by the user device, from a contacts list associatedwith the user, second information relating to the specified person;displaying, in response to the request, on the user device, a combinedsocial networking page comprising the first information and the secondinformation.
 18. The method of claim 17, wherein the second informationcomprises one of a telephone number, an email address, a name of anemployer, and a residential address.